Other than reading and writing pixels, all access to a video device normally goes through the software video driver. (You can use VideoToolbox SetEntriesQuickly.c to bypasses the video driver of a few devices, but I don't recommend that except as a last resort, because then your program will only work with the few video devices that SetEntriesQuickly supports.) The video driver is normally supplied in ROM on the video card or, for built-in video, in the computer's ROM. Many drivers have subtle bugs that TimeVideo has uncovered and documented. This file is a complete list of all the bugs that I know of. If your driver is not listed, please run TimeVideo and send me the report.
I have the very strong impression that reporting these bugs to the manufacturers has led them to eliminate the bugs in subsequent versions. Before TimeVideo there was no easy way to test for most of these bugs.
1. The following drivers crash if one attempts to make a get-entries request. GDGetEntries tests for these driver names and version numbers in order to avoid these bugs. Try the demo TestGDVideo.
•Mac IIci “Macintosh II Built-In Video” (.Display_Video_Apple_RBV1)
(Reported to Apple MacDTS 3/7/90 and Apple.Bugs 12/30/92)
•Relax 19" Model 200 (.Color_Video_Display version 9288). (Reported to Relax Tech. 1/19/93)
2. The following drivers take too long (more than 1 frame) to load the clut (i.e. set-entries request: GDSetEntries). And many suppress one or more frame's worth of VBL interrupts each time they load the clut. Try TimeVideo.
•Apple 4•8 and 8•24 “Macintosh Display Card” (.Display_Video_Apple_MDC) and
“Macintosh Display Card 8•24 GC” (.Display_Video_Apple_MDCGC) take two frames to load the clut (and suppress one vbl interrupt) in all modes. (Reported to Apple.Bugs 12/30/92)
•Radius PrecisionColor 8 and 8xj take 5-8 frames to load the whole clut in 8-bit mode (and suppress 5-8 vbl interrupts); the time is proportional to the number of clut entries being loaded. (Ok in 1-, 2-, and 4-bit modes.)
•“RasterOps ColorBoard 264” (.RasterOps 1.2 264 Video Driver version 9327) takes 2 frames to load the clut (and suppresses 1 vbl interrupt) in 8- and 32-bit modes. (Ok in 1-, 2-, and 4-bit modes.)
•RasterOps “PaintBoard Li” 1.0 24XLi Video Driver takes 4 frames to load the clut (and suppresses 3 vbl interrupts) in 8-,16-, and 32-bit modes. (Ok in 1-,2-, and 4-bit modes.) (Reported to RasterOps 12/30/92).
•“RasterOps 8XL” (.RasterOps 1.2 8XL Video Driver version 9327) takes 4 frames to load the clut (and suppresses 3 vbl interrupts) in 8-bit mode. (Ok in 1-,2-, and 4-bit modes.)
•"RasterOps 24XLTV" (.RasterOps 1.4 24XLTV Video Driver version 9327) takes 4 frames to load the clut (and suppresses 3 vbl interrupts) in 8- and 32-bit modes. (Ok in 1-,2-, 4-, and 16-bit modes.)
•RasterOps "PaintBoard Turbo XL" (.RasterOps 1.0 PBTurboXL Video Driver version 9327) takes 4 frames to load the clut (and suppresses 3 vbl interrupts).
•“Spectrum/8•24 PDQ” (.Display_Video_Apple_SpecRice version 3) takes 4 frames to load the clut in all modes.
3. The following cards and drivers issue multiple VBL interrupts per frame, whereas they should emit exactly one per frame. Try TimeVideo.
•The 4•8 and 8•24 “Macintosh Display Card” (.Display_Video_Apple_MDC) emit several VBL interrupts per video frame. (Reported to Apple.Bugs 12/30/92)
•Apple Quadra 700 "Macintosh E Built-In Video" (.Display_Video_Apple_DAFB) emits 2 VBL interrupts per frame if the processor cache is enabled, but emits only 1, as it's supposed to, if the processor cache is disabled. (Reported by Kyle Cave, cavekr@ctrvax.vanderbilt.edu)
•Apple Quadra 900 “Macintosh C Built-In Video” (.Display_Video_Apple_DAFB) occasionally emits more than 1 VBL interrupt per frame.
•Apple Quadra 950 “Macintosh G Built-In Video” (.Display_Video_Apple_DAFB version 2) emits 2 or 3 VBL interrupts per frame. (Reported to Apple.Bugs 12/30/92)
•Note that the .Display_Video_Apple_DAFB version 3 driver does NOT exhibit this bug, at least on the Centris 650 where it resides. It would be interesting to try copying this driver to the afflicted Quadra's, adapting the instructions given above for copying a driver from the IIsi to the IIci.
4. 16 & 32-bit modes. These video drivers will correctly load the whole clut, but screw up if asked to load one clut entry at a time. The problems only occur in 16- and 32-bit mode. Apparently few or no applications (other than TimeVideo) ever do this, as otherwise the manufacturers would have detected the fault.
•TrueVision NuVista version 3.0 GDDirectSetEntries (i.e. 16- and 32-bit pixel modes) loads garbage unless “start” is zero. GDSetEntries (i.e. 1-, 2-, 4-, and 8-bit pixel modes) works fine.
•RasterOps "PaintBoard Turbo XL" (.RasterOps 1.0 PBTurboXL Video Driver version 9327) crashes when attempting to serially load the CLUT in 16-bit mode.
5. Other bugs:
•“Truevision NuVista+™ Card” (.Display_Video_NuVista version ??) fails all CLUT-readback tests. Reported by David Rose <PSY009@sysh.surrey.ac.uk> on 8/94.
•“Radius PowerView” (.Radius PowerView Display version 9848) calling GetGamma returns a gamma table that's all zero. (Reported to Radius 7/93)
•“SuperMac ColorCard” v1.97S (.Display_SuperMac_ColorCard version 1) does not implement the gamma table, so GDSetGamma and GDGetGamma both return error codes. This is not a problem if what you want is a linear gamma table (i.e. no
gamma translation), as is routinely requested by calling GDSetLinearGamma.
•If the “Radius PrecisionColor 8” and “Radius PrecisionColor 8Xj” sense a monochrome monitor then they always operate in "gray" mode, even though the driver allows you to set and read the color/gray bit. Try TimeVideo.
•Relax 19" Model 200 (.Color_Video_Display version 9288) doesn't support the optional getGamma Status call. The required getPageCnt (aka getPages) Status call erroneously returns a page count of 0 for all modes. Try TimeVideo or TestGDVideo. (Reported to Relax Tech. 1/19/93)
•TrueVision NuVista version 3.0 can't display MacsBug.
•The presence of the 8•24GC accelerator seems to HALVE the speed of CopyBits, at least on a RasterOps 8XL running on a Mac IIfx. CopyBitsQuickly is unaffected, of course.
•“Spectrum/8•24 PDQ” (.Display_Video_Apple_SpecRice version 3) failed all read-write tests of clut when in 16-bit-pixel mode.
6. Video drivers that have been tested (version 0, unless noted otherwise):